package main

import (
	"fmt"
	"sync"
)

// var wg sync.WaitGroup

// func hello(i int) {
// 	defer wg.Done() //goroutine结束就登记-1
// 	fmt.Println("Hello Goroutine!", i)
// }
// func main() {
// 	for i := 0; i < 10; i++ {
// 		wg.Add(1) //启动一个goroutine就登记+1
// 		go hello(i)
// 	}
// 	wg.Wait() //等待所有登记的goroutine都结束
// }

var wp sync.WaitGroup

func showMsg(i int) {
	defer wp.Done() // <-->defer wp.Add(-1)
	fmt.Printf("i:%v\n", i)
}
func main() {
	for i := 0; i < 10; i++ {
		//启动一个协程来执行
		go showMsg(i)
		wp.Add(+1)
	}
	wp.Wait()
	//主协程
	fmt.Println("end...")
}
